package com.example.flowabledemo.common.flowable;

import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.IdUtil;
import java.util.HashMap;
import java.util.Map;

/**
 * （1）流程状态说明processStatus：0完结、1暂存、2流程中、3被打回、-1撤销（删除） （2）审批状态：aa_approval表status: -1撤销(删除)、0发起、1同意、2不同意、3重新发起
 *
 * @description 流程值
 */
public final class ProcessValues {

  //参数1为终端ID
  //参数2为数据中心ID
  private static Snowflake snowflake = IdUtil.getSnowflake(1, 2);

  /**
   * 雪花算法，生成唯一业务key
   */
  public static String generateBusinessKey() {
    return snowflake.nextIdStr();
  }

  /**
   * 请假流程实例
   */
  public static final String TYPE_LEAVE = "leaveProcesses";


  /**
   * 已经完成
   */
  public static final String PROCESS_STATUS_OK = "0";
  /**
   * 暂存
   */
  public static final String PROCESS_STATUS_SAVE = "1";
  /**
   * 流程中
   */
  public static final String PROCESS_STATUS_RUN = "2";
  /**
   * 流程打回
   */
  public static final String PROCESS_STATUS_BACK = "3";
  /**
   * 撤销（删除）
   */
  public static final String PROCESS_STATUS_CANCEL = "-1";

  // start 审批状态：aa_approval表status:-1撤销(删除)、0发起、1同意、2不同意、3重新发起
  public static final String APPROVAL_STATUS_CANCEL = "-1";
  public static final String APPROVAL_STATUS_START = "0";
  public static final String APPROVAL_STATUS_YES = "1";
  public static final String APPROVAL_STATUS_NO = "2";
  public static final String APPROVAL_STATUS_AGAIN = "3";
  // end 审批状态：aa_approval表status: -1撤销(删除)、0发起、1同意、2不同意、3重新发起

  // start status状态:1提交、0暂存、2更新
  public static final String STATUS_UPDATE = "2";
  public static final String STATUS_SUBMIT = "1";
  public static final String STATUS_SAVE = "0";
  // end status状态:1提交、0暂存

  /**
   * 流程业务类型
   */
  public static final Map<String, String> BUSINESS_TYPE = new HashMap<>();

  static {
    BUSINESS_TYPE.put("人员流程", "1");
    BUSINESS_TYPE.put("财务流程", "2");
  }
}
